package com.example.steriousfx.utils;

import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 字符串工具
 *
 * @author gzkemays
 * @since 2021/10/20 16:36
 */
public class StrUtils {
  private static final Pattern CN_PATTERN = Pattern.compile("[\u4e00-\u9fa5]");
  /**
   * 判断是否为中文
   *
   * @param str 字符串
   * @return 判断结果
   */
  public static boolean isContainChinese(String str) {
    Matcher m = CN_PATTERN.matcher(str);
    return m.find();
  }

  /**
   * 生成随机数
   *
   * @param length 生成位数
   * @return {@link String} 生成结果
   */
  public static String createRandomStr(int length) {
    StringBuilder sb = new StringBuilder();
    // 随机用以下三个随机生成器
    Random rand = new Random();
    Random randData = new Random();
    int data = 0;
    for (int i = 0; i < length; i++) {
      int index = rand.nextInt(3);
      // 目的是随机选择生成数字，大小写字母
      switch (index) {
        case 1:
          // 保证只会产生65~90之间的整数
          data = randData.nextInt(26) + 65;
          sb.append((char) data);
          break;
        case 2:
          // 保证只会产生97~122之间的整数
          data = randData.nextInt(26) + 97;
          sb.append((char) data);
          break;
        default:
          // 仅仅会生成0~9
          data = randData.nextInt(10);
          sb.append(data);
      }
    }
    return sb.toString();
  }
}
